package shm.capaDatos.entidades;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import shm.capaDatos.vo.TelefonoVO;
import shm.capaDatos.vo.TipoTelefonoVO;
import shm.util.Utilidad;
@Entity
public class Telefono implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	@Column(length=30,nullable = false, unique = false)
	private String numero;
	@ManyToOne
	@JoinColumn(name="tipoTelefono_id", nullable = false)
	private TipoTelefono tipoTelefono;
	private static final long serialVersionUID = 1L;
	
	public TelefonoVO getVO(){
		TipoTelefonoVO tipoTelefonoVO = null;
		if(this.tipoTelefono != null){
			tipoTelefonoVO = this.tipoTelefono.getVO();
		}
		
		TelefonoVO telefonoVO = new TelefonoVO(this.id, this.numero, tipoTelefonoVO, this.id);
		return telefonoVO;
	}
	public void setVO(TelefonoVO telefonoVO){
		if(telefonoVO != null){
			TipoTelefonoVO tipoTelefonoVO = telefonoVO.getTipoTelefono();
			this.id = telefonoVO.getId();
			this.numero = telefonoVO.getNumero();
			if(tipoTelefonoVO != null){
				if(this.tipoTelefono == null){
					this.tipoTelefono = new TipoTelefono();
				}
				this.tipoTelefono.setVO(tipoTelefonoVO);
			}else{
				this.tipoTelefono = null;
			}
		}

	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getNumero() {
		return numero;
	}
	public void setNumero(String numero) {
		this.numero = numero;
	}
	public TipoTelefono getTipoTelefono() {
		return tipoTelefono;
	}
	public void setTipoTelefono(TipoTelefono tipoTelefono) {
		this.tipoTelefono = tipoTelefono;
	}
	@Override
	public boolean equals(Object telefono){
		if(telefono == null){
			return false;
		}else{
			if(!Utilidad.iguales(this.tipoTelefono,((Telefono)telefono).getTipoTelefono())){
				return false;
			}else{
				return Utilidad.iguales(this.numero,((Telefono)telefono).getNumero());

			}
		}
	}


}
